/**
 * 
 */
package file;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.security.MessageDigest;

/**
 * @author acidflow
 *
 */
public class FileCheckSum {
	
	private String encryption;
	private FileInputStream file;
	
	/**
	 * Prépare le système pour obtenir le hash d'un fichier
	 * @param encryption le type de cryptage
	 * @param file	le chemin vers le fichier
	 * @throws FileNotFoundException
	 */
	public FileCheckSum(String encryption, String file) throws FileNotFoundException{
		this.encryption = encryption;
		this.file = new FileInputStream(file);
	}
	
	/**
	 * Génère le hash du fichier selon les paramètres précédents
	 * @return le hash du fichier
	 * @throws Exception
	 */
	public String getCheckSum() throws Exception{
		byte[] dataBytes = new byte[1024];
		MessageDigest enc = MessageDigest.getInstance(this.encryption);
		int readBytes = 0;
		while((readBytes = this.file.read(dataBytes)) != -1){
			enc.update(dataBytes, 0, readBytes);
		}
		byte[] encBytes = enc.digest();
		StringBuffer sb = new StringBuffer();
	    for (int i = 0; i < encBytes.length; i++) {
	         sb.append(Integer.toString((encBytes[i] & 0xff) + 0x100, 16).substring(1));
	    }
	    return new String(sb);
	}
	
	
}
